package cn.sc.summer.constant.util;

import cn.sc.summer.constant.model.ListChange;

import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 类名：针对集合的工具
 *
 * @author a-xin
 * @date 2024/8/15 15:41
 */
public class ListUtilX {

    /**
     * 获取两个list之间的差量
     *
     * @param listIn   进入的数据
     * @param listBind 已绑定的数据
     * @param <T>      数据类型
     * @return 两者差量数据
     */
    public static <T> ListChange<T> getChange(Collection<T> listIn, Collection<T> listBind) {
        ListChange<T> result = new ListChange<>();
        List<T> needBind = listIn.stream().filter(item -> !listBind.contains(item)).collect(Collectors.toList());
        List<T> needDel = listBind.stream().filter(item -> !listIn.contains(item)).collect(Collectors.toList());
        result.setNeedAdd(needBind);
        result.setNeedDel(needDel);
        return result;
    }

}
